'use strict'

import {app} from 'electron'
import initWindow from './services/windowManager'
import DisableButton from './config/DisableButton'
import electronDevtoolsInstaller, {VUEJS_DEVTOOLS} from 'electron-devtools-installer'

function onAppReady() {
  initWindow()
  DisableButton.Disablef12()
  if (process.env.NODE_ENV === 'development') {
    electronDevtoolsInstaller(VUEJS_DEVTOOLS).then((name) => console.log(`installed: ${name}`)).catch(
        err => console.log('Unable to install `vue-devtools`: \n', err))
  }
  if (process.env.NODE_ENV !== 'production') {
    require('vue-devtools').install()
  }
  //下面是内置的py,因为未实现打包后一起执行，所以暂时不用了
  // 启动Python脚本
  // let pyFileRelative
  // if (process.env.NODE_ENV === 'production') {
  //   // 这个路径打包后是有问题的，具体原因需要进一步排查，暂时先用这个
  //   pyFileRelative = '../../src/main/python/main.py';
  // } else {
  //   pyFileRelative = './python/main.py'
  // }
  // // 获取Python脚本文件的绝对路径
  // console.log("__dirname", __dirname)
  // let pyFileAbsolute = path.join(__dirname, pyFileRelative);
  // startPythonProcesses(pyFileAbsolute)
}

// function stopPythonProcesses() {
//   pyProcesses.forEach((pyProc) => {
//     if (pyProc) {
//       pyProc.kill();
//     }
//   });
// }

// 启动Python文件
// function startPythonProcesses(pyFileAbsolute) {
//   if (pyFileAbsolute) {
//     const isRunning = pyProcesses.some(proc => {
//       return proc.spawnfile && proc.spawnfile === pyFileAbsolute;
//     });
//     if (!isRunning) {
//       const pyProc = spawn('python', [pyFileAbsolute]);
//       pyProcesses.push(pyProc);
//       pyProc.stdout.on('data', (data) => {
//         console.log(`stdout: ${data.toString('utf8')}`);
//       });
//       pyProc.stderr.on('data', (data) => {
//         console.error(`stderr: ${data.toString('utf8')}`);
//       });
//       pyProc.on('close', (code) => {
//         console.log(`Python process exited with code ${code}`);
//         pyProcesses = pyProcesses.filter(proc => proc !== pyProc); // 从数组中移除该进程
//       });
//     }
//   }
// }

//禁止程序多开，此处需要单例锁的同学打开注释即可
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
  app.quit()
}
app.isReady() ? onAppReady() : app.on('ready', onAppReady)
// 解决9.x跨域异常问题
app.commandLine.appendSwitch('disable-features', 'OutOfBlinkCors')

app.on('window-all-closed', () => {
  // 所有平台均为所有窗口关闭就退出软件
  app.quit()
  // 关闭Python进程
  // stopPythonProcesses();
})
app.whenReady().then(() => {
  const downloadsPath = app.getPath('desktop')
  // localStorage.setItem('downloadsPath', downloadsPath)
})

app.on('browser-window-created', () => {
  console.log('window-created')
})

if (process.defaultApp) {
  if (process.argv.length >= 2) {
    app.removeAsDefaultProtocolClient('electron-vue-template')
    console.log('有于框架特殊性开发环境下无法使用')
  }
} else {
  app.setAsDefaultProtocolClient('electron-vue-template')
}
